package com.sxj.corejava.code19_代理模式;

import com.sxj.corejava.code18_工厂模式.ObjectFactory;
import com.sxj.corejava.util.DateUtil;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @author 石小俊
 */
public class UserServiceProxy implements UserService {

    private UserService userService = (UserService) ObjectFactory.getObject("userServiceTarget");

    @Override
    public String register(String username, String password, String phone, String address) {
        System.out.println("执行目标方法之前:在" + new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss").format(new Date()) + "访问了register方法");
        String register = userService.register(username, password, phone, address);
        System.out.println("执行目标方法之后:在" + DateUtil.toString(new Date(), "yyyy年MM月dd日 HH:mm:ss") + "成功执行了register方法,方法的返回值为:" + register);
        // 代理对象中的方法不能改变目标方法的功能,只能在目标方法的基础上增加一些操作
        return register;
    }

    @Override
    public String login(String username, String password) {
        System.out.println("执行目标方法之前");
        String result = userService.login(username, password);
        System.out.println("执行目标方法之后");
        return result;
    }
}
